package algorithm.array;

/**
 * leetcode : https://leetcode.com/problems/remove-duplicates-from-sorted-array/description/
 * Difficulty : Easy
 *
 * 给一个有序的数组，该数组有重复的数字，移除掉重复的数字，并且返回新数组的长度
 * 思路：
 * 利用有序的特性，存储前一个元素的值
 * 如果下一个一样，则跳过。
 * 如果不一样，size自增，tmp 替换为该数
 *
 * size为当前需要替换的重复的数，看到不一样数的时候 num[size] = num[i] 即可
 * @Author Antony
 * @Since 2018/7/18 17:09
 */
public class RemoveDuplicatesFromSortedArray {

    /**
     * beats 88.88% - 8ms
     */
    public int removeDuplicates(int[] nums) {
        if(nums.length == 0) return 0;
        int tmp = nums[0];
        int size = 1;
        for(int i=1; i<nums.length; i++){
            if(tmp != nums[i]){
                tmp = nums[i];
                nums[size++] = tmp;
            }
        }

        return size;
    }
}
